package com.xmindguoguo.boot.core;

import java.awt.Font;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;

import com.wf.captcha.Captcha;
import com.wf.captcha.GifCaptcha;
import com.wf.captcha.utils.CaptchaUtil;
import com.xmindguoguo.boot.common.constant.SessionConstant;

/**
 * 验证码
 * 
 * @ClassName CaptchaController
 * @author <a href="892042158@qq.com" target="_blank">于国帅</a>
 * @date 2019年1月26日 下午2:46:17
 *
 */
@Controller
public class CaptchaController {
    /**
     * 类型 描述
     * 
     * @TYPE_DEFAULT 数字和字母混合
     * @TYPE_ONLY_NUMBER 纯数字
     * @TYPE_ONLY_CHAR 纯字母
     * @TYPE_ONLY_UPPER 纯大写字母
     * @TYPE_ONLY_LOWER 纯小写字母
     * @TYPE_NUM_AND_UPPER 数字和大写字母
     * 
     * @Title captcha
     * @author 于国帅
     * @date 2019年1月27日 下午8:49:59
     * @param request
     * @param response
     * @throws Exception
     *             void
     */
    @RequestMapping("/images/captcha")
    public void captcha(HttpServletRequest request, HttpServletResponse response, @RequestParam(required = false) String d)
            throws Exception {
//        CaptchaUtil.out(request, response); // 中文
        // 设置请求头为输出图片类型
        CaptchaUtil.setHeader(response);

        // 三个参数分别为宽、高、位数
        GifCaptcha gifCaptcha = new GifCaptcha(130, 48, 5);

        // 设置字体
        gifCaptcha.setFont(new Font("Verdana", Font.PLAIN, 32)); // 有默认字体，可以不用设置

        // 设置类型，纯数字、纯字母、字母数字混合
        gifCaptcha.setCharType(Captcha.TYPE_DEFAULT);

        // 验证码存入session
        request.getSession().setAttribute(SessionConstant.CAPTCHA, gifCaptcha.text().toLowerCase());
        // 输出图片流
        gifCaptcha.out(response.getOutputStream());
    }
}
